function [IRF]=SubFun_Param2IRF(PP,SS,MODEL,EquJac,Info,Param)

%% Parameters
FixedParamList  =   fieldnames(Info.FixedParam);
if ~isempty(FixedParamList)
    for ii=1:length(FixedParamList)
        vv          =   FixedParamList{ii};
        PP.(vv)     =   Info.FixedParam.(vv);
    end
end

for ii=1:Info.ParamNum
    vv              =   Info.ParamList{ii};
    if strcmp(vv,'Cons_Elas')
        PP.Cons_ElasHF  =   Param(ii);
        PP.Cons_ElasTN  =   Param(ii);
    else
        PP.(vv)         =   Param(ii);
    end
end

%% Perturbation Solution
EquJac.NK       =   Equ_NK(PP,SS,1);
EquJac.Portfolio=   Equ_Portfolio(PP,SS,MODEL,1,[],[],0);
fir_ord         =   JacAssemble(MODEL,EquJac);
[gx,hx,gxhx_ExitFlag,gxhx_Info]=gx_hx(fir_ord,1);
if gxhx_ExitFlag~=1
    warning('Perturbation Solution is problematic');
    IRF         =   [];
    return
else
    solution    =   struct('gx',gx,'hx',hx);
    IRF         =   IRF_1order(MODEL,solution,Info.StdVec,[],4*10);
    for ii=1:MODEL.VarBlock.SH.Dim
        SH          =   MODEL.VarBlock.SH.VarList{ii};
        IRF.(SH)    =   IRF_Aug(PP,SS,MODEL,IRF.(SH));
    end
end
